Форматирование даты
https://github.com/NLog/NLog/wiki/Date-layout-renderer

Форматирование exception
https://stackoverflow.com/questions/4684399/how-to-get-the-stack-trace-when-logging-exceptions-with-nlog
https://stackoverflow.com/questions/46565639/nlog-exception-layout-to-format-exception-type-message-and-stack-trace

The @ means serialize all Exception-properties into Json-format
${exception:format=@}


Контекст логирования MappedDiagnosticsLogicalContext

NLog – tracking flow of requests using MappedDiagnosticsLogicalContext
https://tpodolak.com/blog/2016/07/05/nlog-tracking-flow-of-requests-using-mappeddiagnosticslogicalcontext/


Обрезка строк для избежании ошибки при записи в базу.

NLog auto truncate messages
https://stackoverflow.com/questions/19368284/nlog-auto-truncate-messages


Реализация кастомного target

Extending NLog is... easy!
https://nlog-project.org/2015/06/30/extending-nlog-is-easy.html


Параллельная запись в файл, использует mutex
Параметр concurrentWrites


Асинхронное логирование (буферизация и выделенный поток):

Запись события лога происходит не в target, а в очередь в оперативной памяти. Выделенный поток периодически запускается и отправляет данные события в targets.
Блокирующий вызов, принудительная запись всех накопившихся в очереди событий и отчистку очереди, чтобы гарантировать сохранение всех логов, находящихся в очереди.
Очередь событий может переполниться и возможно имеет смысл явно определить политику переполнения (отбрасывать сообщения или увеличить размер буфера).

AsyncTargetWrapper
https://nlog-project.org/documentation/v2.0.1/html/T_NLog_Targets_Wrappers_AsyncTargetWrapper.htm

Should NLog flush all queued messages in the AsyncTargetWrapper when Flush() is called?
https://stackoverflow.com/questions/10492720/should-nlog-flush-all-queued-messages-in-the-asynctargetwrapper-when-flush-is

NLog performance
https://stackoverflow.com/questions/3868240/nlog-performance

Теги: